﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace nr.GLV.Windows
{
    public partial class MainForm : Form
    {
        private ShortcutForm frmShortcuts;

        private string Info { get { return slInfo.Text; } set { slInfo.Text = value; } }

        public MainForm()
        {
            InitializeComponent();
            frmShortcuts = new ShortcutForm();
            frmShortcuts.VisibleChanged += frmShortcuts_VisibleChanged;
        }

        void frmShortcuts_VisibleChanged(object sender, EventArgs e)
        {
            miHelpShortcuts.Checked = !frmShortcuts.Visible;
        }

        private void miFileExit_Click(object sender, EventArgs e)
        {
            Quit();
        }

        private void miFileCities_Click(object sender, EventArgs e)
        {
            ShowCities();
        }

        private void miFileCustomers_Click(object sender, EventArgs e)
        {
            ShowCustomers();
        }

        private void miFileGraves_Click(object sender, EventArgs e)
        {
            ShowGraves();
        }

        private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (miOptionsSyncronizeOnExit.Checked)
            {
                e.Cancel = !(
                    UpdateDatabase() ||
                    MessageBox.Show(
                        "Impossibile sincronizzare il database.\n\r" +
                        "Continuando si perderanno tutte le modifiche apportate ai dati " +
                        "dall'ultimo salvataggio.\n\r" +
                        "Vuoi chiudere la sessione di lavoro?",
                        Application.ProductName,
                        MessageBoxButtons.YesNo,
                        MessageBoxIcon.Question,
                        MessageBoxDefaultButton.Button2) == System.Windows.Forms.DialogResult.Yes);
            }
            else
                if (Data.HasChanges())
                e.Cancel = 
                    MessageBox.Show(
                        "I dati sono stati modificati e non sincronizzati con il database.\n\r" +
                        "Continuando si perderanno tutte le modifiche apportate dopo l'ultima " +
                        "sincronizzazione.\n\rVuoi davvero chiudere e non sincronizzare i dati?",
                        Application.ProductName,
                        MessageBoxButtons.YesNo,
                        MessageBoxIcon.Warning,
                        MessageBoxDefaultButton.Button2) == System.Windows.Forms.DialogResult.No;
        }

        private void miOptionsSyncronizeNow_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show(
                    "Le modifiche effettuate dall'ultimo salvataggio saranno rese " +
                    "definitive e non annullabili.\n\r" +
                    "Si è sicuri di voler procedere?",
                    Application.ProductName,
                    MessageBoxButtons.YesNo,
                    MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes)
                if (!UpdateDatabase())
                    MessageBox.Show(
                            "Impossibile sincronizzare il database.\n\r" +
                            "Contattare l'assistenza per risolvere il problema.",
                            Application.ProductName,
                            MessageBoxButtons.OK,
                            MessageBoxIcon.Error);
        }

        private void miOptionsBackup_Click(object sender, EventArgs e)
        {
            BackupData();
        }

        private void miOptionsRestore_Click(object sender, EventArgs e)
        {
            RestoreData();
        }

        private void annullaModificheToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show(
                "Si vuole davvero annullare tutte le modifiche effettuate?",
                Application.ProductName,
                MessageBoxButtons.YesNo,
                MessageBoxIcon.Warning) == System.Windows.Forms.DialogResult.Yes)
                nr.GLV.Data.DBO.Data.RejectChanges();
        }

        private void miHelpAbout_Click(object sender, EventArgs e)
        {
            AboutForm frm = new AboutForm();
            frm.ShowDialog(this);
        }

        private void miPrintFile_Click(object sender, EventArgs e)
        {
            PrintFilesForm frm = new PrintFilesForm()
            {
                Data = nr.GLV.Data.DBO.Data
            };
            frm.ShowDialog(this);
        }

        private void miPaymentsHandling_Click(object sender, EventArgs e)
        {
            ShowPayments();
        }

        private void miHelpShortcuts_Click(object sender, EventArgs e)
        {
            ToggleShortcutsWindow();
        }
    }
}
